/**
 * 
 */
package com.eagle.coders.common.form.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import com.eagle.coders.common.form.annotations.type.ActionPerformerType;
import com.eagle.coders.common.form.annotations.type.ActionTypes;
import com.eagle.coders.common.form.interfaces.ExecutionRequest;
import com.eagle.coders.common.form.interfaces.ExecutionResponse;
import com.eagle.coders.common.form.interfaces.IExecution;

/**
 * @author Anees
 *
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Action {

	static class Empty implements IExecution{

		@Override
		public ExecutionResponse execute(ExecutionRequest executionRequest) {
			return null;
		}
	}

	ActionTypes actionType();
	
	Class<? extends IExecution> exeution() default Empty.class;
	
	ActionPerformerType performerType() default ActionPerformerType.NONE;
	
	String performerPath() default "";
	
}
